package com.justyh.ssm.service.impl;

import com.beust.jcommander.internal.Lists;
import com.justyh.ssm.entity.LanguageMatch;
import com.justyh.ssm.service.TranslateService;
import com.justyh.ssm.util.HttpGet;
import com.justyh.ssm.util.MD5;
import org.springframework.stereotype.Repository;

import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Repository
public class TranslateServiceImpl implements TranslateService{
    private static final String TRANS_API_HOST = "http://api.fanyi.baidu.com/api/trans/vip/translate";
    private static final String APP_ID = "20170604000051735";
    private static final String SECURITY_KEY = "xI1nlhE0GNDsVf38YoGY";
    private static List<LanguageMatch> languageMatchList;

    @PostConstruct
    public void init(){

        LanguageMatch languageMatch1=new LanguageMatch("auto","自动检测");
        LanguageMatch languageMatch2=new LanguageMatch("zh","中文");
        LanguageMatch languageMatch3=new LanguageMatch("en","英语");
        LanguageMatch languageMatch4=new LanguageMatch("yue","粤语");
        LanguageMatch languageMatch5=new LanguageMatch("wyw","文言文");
        LanguageMatch languageMatch6=new LanguageMatch("jp","日语");
        LanguageMatch languageMatch7=new LanguageMatch("kor","韩语");
        LanguageMatch languageMatch8=new LanguageMatch("fra","法语");
        LanguageMatch languageMatch9=new LanguageMatch("spa","西班牙语");
        LanguageMatch languageMatch10=new LanguageMatch("th","泰语");
        LanguageMatch languageMatch11=new LanguageMatch("ru","俄语");
        LanguageMatch languageMatch12=new LanguageMatch("pt","葡萄牙语");
        LanguageMatch languageMatch13=new LanguageMatch("de","德语");
        LanguageMatch languageMatch14=new LanguageMatch("it","意大利语");
        LanguageMatch languageMatch15=new LanguageMatch("el","希腊语");
        LanguageMatch languageMatch16=new LanguageMatch("nl","荷兰语");
        LanguageMatch languageMatch17=new LanguageMatch("pl","波兰语");
        LanguageMatch languageMatch18=new LanguageMatch("bul","保加利亚语");
        LanguageMatch languageMatch19=new LanguageMatch("est","爱沙尼亚语");
        LanguageMatch languageMatch20=new LanguageMatch("dan","丹麦语");
        LanguageMatch languageMatch21=new LanguageMatch("fin","芬兰语");
        LanguageMatch languageMatch22=new LanguageMatch("cs","捷克语");
        LanguageMatch languageMatch23=new LanguageMatch("rom","罗马尼亚语");
        LanguageMatch languageMatch24=new LanguageMatch("auto","斯洛文尼亚语");
        LanguageMatch languageMatch25=new LanguageMatch("auto","瑞典语");
        LanguageMatch languageMatch26=new LanguageMatch("auto","匈牙利语");
        LanguageMatch languageMatch27=new LanguageMatch("auto","繁体中文");
        LanguageMatch languageMatch28=new LanguageMatch("auto","越南语");

        languageMatchList= Lists.newArrayList(languageMatch1,languageMatch2,languageMatch3,languageMatch4,languageMatch5,
                languageMatch6,languageMatch7,languageMatch8,languageMatch9,languageMatch10,
                languageMatch11,languageMatch12,languageMatch13,languageMatch14,languageMatch15,
                languageMatch16,languageMatch17,languageMatch18,languageMatch19,languageMatch20,
                languageMatch21,languageMatch22,languageMatch23,languageMatch24,languageMatch25,
                languageMatch26,languageMatch27,languageMatch28);


    }
    public String getTransResult(String query, String from, String to) {
        Map<String, String> params = buildParams(query, from, to);
        return HttpGet.get(TRANS_API_HOST, params);
    }

    public List<LanguageMatch> getAllLanguages() {
        return languageMatchList;
    }

    private Map<String, String> buildParams(String query, String from, String to) {
        Map<String, String> params = new HashMap<String, String>();
        params.put("q", query);
        params.put("from", from);
        params.put("to", to);

        params.put("appid", APP_ID);

        // 随机数
        String salt = String.valueOf(System.currentTimeMillis());
        params.put("salt", salt);

        // 签名
        String src = APP_ID + query + salt + SECURITY_KEY; // 加密前的原文
        params.put("sign", MD5.md5(src));

        return params;
    }
}
